﻿#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int a, int b)
{
	return a + b;
}
double Add(double a, double b)
{
	return a + b;
}
// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}
// 3、参数类型顺序不同
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}
int main()
{
	Add(10, 20);
	Add(10.1, 20.2);

	f();
	f(10);

	f(10, 'a');
	f('a', 10);

	return 0;
}
//#include <iostream>
//using namespace std;
//int IntAdd(int x, int y)
//{
//	return x + y;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	cin >> a >> b;
//	int c = IntAdd(a, b);
//	cout << c << endl;
//	return 0;
//}
//#include<iostream>
//#include<ctime>
//using namespace std;
////定义全局字符串
//string s("hello world");
//void TestFunc1(string s) {}
//void TestFunc2(string& s) {}
//void Test()
//{
//	//以值作为函数参数
//	size_t begin1 = clock();
//	for (size_t i = 0; i < 10000000; ++i)
//	{
//		TestFunc1(s);
//	}
//	size_t end1 = clock();
//	//以引⽤作为函数参数
//	size_t begin2 = clock();
//	for (size_t i = 0; i < 10000000; ++i)
//	{
//		TestFunc2(s);
//	}
//	size_t end2 = clock();
//	//分别计算两个函数运⾏结束后的时间
//	cout << "TestFunc1(string)-time:" << end1 - begin1 << endl;
//	cout << "TestFunc2(string&)-time:" << end2 - begin2 << endl;
//}
//int main()
//{
//	Test();
//	return 0;
//}
//#include <iostream>    
//#include <utility>      
//using namespace std;
//void printString(string& s)
//{
//	cout << s << endl;
//}
//int main()
//{
//	string s("hello world");
//	printString(s);
//}
//int main()
//{
//	int arr1[4];
//	int arr2[] = { 10,20,30,40 };// arr1: 0  0  0  0
//	swap(arr1, arr2);			// arr1: 0  0  0  0    arr2: 10 20 30 40
//	for (int e : arr1)			// arr1: 10 20 30 40   arr2 : 0  0  0  0
//		cout << e << " ";
//	cout << endl;
//	return 0;
//}
//#include <iostream>
//#include <utility>
//using namespace std;
//int main()
//{
//	int a = 0;
//	int b = 0;
//	cin >> a >> b;
//	cout << "交换前, a = " << a << " b = " << b << endl;
//	swap(a, b);//直接使⽤库函数swap交换两个变量
//	cout << "交换后, a = " << a << " b = " << b << endl; 
//	return 0;
//}
//#include <iostream>
//using namespace std;

//void Swap(int& x, int& y)
//{
//	int z = x;
//	x = y;
//	y = z;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	cin >> a >> b;
//	cout << "交换前, a = " << a << " b = "<< b << endl;
//	Swap(a, b);
//	cout << "交换后, a = " << a << " b = "<< b << endl;
//	return 0;
//}
//int main()
//{
//	int a = 10;
//	int b = 0;
//	//int& ra;   //该条语句编译时会出错
//	int& ra = a;
//	printf("%d %d\n", a, ra);
//	ra = b;//这是把b赋值给了ra
//	int& rra = a;
//	printf("%d %d %d\n", a, ra, rra);
//	printf("%p\n", &b);
//	printf("%p %p %p\n", &a, &ra, &rra);
//}
//void TestRef()
//{
//	int a = 10;
//	int& ra = a;//定义引⽤类型
//	//通过printf输出a, ra的地址
//	printf("%p\n", &a);
//	printf("%p\n", &ra);
//}
//void Swap(int x, int y)
//{
//	int z = x;
//	x = y;
//	y = z;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	cin >> a >> b;
//	cout << "交换前, a = " << a << " b = " << b << endl;
//	Swap(a, b);
//	cout << "交换后, a = " << a << " b = " << b << endl;
//	return 0;
//}